Package particleengine
Class Particles
java.lang.Object
com.fs.starfarer.api.combat.BaseCombatLayeredRenderingPlugin
particleengine.Particles
- All Implemented Interfaces:
com.fs.starfarer.api.campaign.listeners.CurrentLocationChangedListener,com.fs.starfarer.api.combat.CombatLayeredRenderingPlugin,com.fs.starfarer.api.EveryFrameScript
public class Particles
extends com.fs.starfarer.api.combat.BaseCombatLayeredRenderingPlugin
implements com.fs.starfarer.api.EveryFrameScript, com.fs.starfarer.api.campaign.listeners.CurrentLocationChangedListener
Particle system implementation.
Create a default emitter via
initialize(org.lwjgl.util.vector.Vector2f, int, int, int) or a custom emitter by extending IEmitter,
set the emitter's properties with methods in Emitter,
and generate particles using an emitter with burst(particleengine.IEmitter, int) or stream(particleengine.IEmitter, int, float, float).-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic interfaceParticles.StreamAction<T extends IEmitter>Action that can be performed before each generation in astream(IEmitter, int, float, float, StreamAction)call. -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoidadvance(float amount) static voidanchorEmitter(IEmitter emitter, com.fs.starfarer.api.combat.CombatEntityAPI entity) Combat only.static booleanGenerates an instantaneous burst of particles.static EmittercreateCopy(Emitter copy) Same ascreateCopy(Emitter, SpriteAPI, int, int, int), but also copiescopy's sprite and blending settings.static EmittercreateCopy(Emitter copy, com.fs.starfarer.api.graphics.SpriteAPI sprite) Same ascreateCopy(Emitter, SpriteAPI, int, int, int), but also copiescopy's blending settings.static EmittercreateCopy(Emitter copy, com.fs.starfarer.api.graphics.SpriteAPI sprite, int sfactor, int dfactor, int blendMode) Initializes anEmitterwith the given sprite and blend mode settings, and then copies all ofcopy's properties to it.EnumSet<com.fs.starfarer.api.combat.CombatEngineLayers> floatstatic Emitterinitialize(org.lwjgl.util.vector.Vector2f location) Same asinitialize(Vector2f, SpriteAPI, int, int, int), but uses the default additive blending and a default particle sprite.static Emitterinitialize(org.lwjgl.util.vector.Vector2f location, int sfactor, int dfactor, int blendMode) Same asinitialize(Vector2f, SpriteAPI, int, int, int), but uses a default particle sprite instead of sampling a texture.static Emitterinitialize(org.lwjgl.util.vector.Vector2f location, com.fs.starfarer.api.graphics.SpriteAPI sprite) Same asinitialize(Vector2f, SpriteAPI, int, int, int), but uses additive blending by default.static Emitterinitialize(org.lwjgl.util.vector.Vector2f location, com.fs.starfarer.api.graphics.SpriteAPI sprite, int sfactor, int dfactor, int blendMode) Initialize anEmitter.static Emitterinitialize(org.lwjgl.util.vector.Vector2f location, String spriteLoc) Uses default additive blending.static Emitterinitialize(org.lwjgl.util.vector.Vector2f location, String spriteLoc, int sfactor, int dfactor, int blendMode) Takes the sprite location instead of a SpriteAPI object.booleanisDone()voidrender(com.fs.starfarer.api.combat.CombatEngineLayers layer, com.fs.starfarer.api.combat.ViewportAPI viewport) voidreportCurrentLocationChanged(com.fs.starfarer.api.campaign.LocationAPI prev, com.fs.starfarer.api.campaign.LocationAPI curr) booleanstatic voidGenerates a continuous stream of particles.static <T extends IEmitter>
voidstream(T emitter, int particlesPerBurst, float particlesPerSecond, float maxDuration, @Nullable Particles.StreamAction<T> doBeforeGenerating) Generates a continuous stream of particles.static <T extends IEmitter>
voidstream(T emitter, int particlesPerBurst, float particlesPerSecond, float maxDuration, @Nullable Particles.StreamAction<T> doBeforeGenerating, @Nullable Particles.StreamAction<T> doWhenFinished) Generates a continuous stream of particles.Methods inherited from class com.fs.starfarer.api.combat.BaseCombatLayeredRenderingPlugin
cleanup, getEntity, init, isExpired
-
Constructor Details
-
Particles
public Particles()
-
-
Method Details
-
reportCurrentLocationChanged
public void reportCurrentLocationChanged(com.fs.starfarer.api.campaign.LocationAPI prev, com.fs.starfarer.api.campaign.LocationAPI curr) - Specified by:
reportCurrentLocationChangedin interfacecom.fs.starfarer.api.campaign.listeners.CurrentLocationChangedListener
-
getActiveLayers
- Specified by:
getActiveLayersin interfacecom.fs.starfarer.api.combat.CombatLayeredRenderingPlugin- Overrides:
getActiveLayersin classcom.fs.starfarer.api.combat.BaseCombatLayeredRenderingPlugin
-
getRenderRadius
public float getRenderRadius()- Specified by:
getRenderRadiusin interfacecom.fs.starfarer.api.combat.CombatLayeredRenderingPlugin- Overrides:
getRenderRadiusin classcom.fs.starfarer.api.combat.BaseCombatLayeredRenderingPlugin
-
isDone
public boolean isDone()- Specified by:
isDonein interfacecom.fs.starfarer.api.EveryFrameScript
-
runWhilePaused
public boolean runWhilePaused()- Specified by:
runWhilePausedin interfacecom.fs.starfarer.api.EveryFrameScript
-
advance
public void advance(float amount) - Specified by:
advancein interfacecom.fs.starfarer.api.combat.CombatLayeredRenderingPlugin- Specified by:
advancein interfacecom.fs.starfarer.api.EveryFrameScript- Overrides:
advancein classcom.fs.starfarer.api.combat.BaseCombatLayeredRenderingPlugin
-
render
public void render(com.fs.starfarer.api.combat.CombatEngineLayers layer, com.fs.starfarer.api.combat.ViewportAPI viewport) - Specified by:
renderin interfacecom.fs.starfarer.api.combat.CombatLayeredRenderingPlugin- Overrides:
renderin classcom.fs.starfarer.api.combat.BaseCombatLayeredRenderingPlugin
-
anchorEmitter
public static void anchorEmitter(IEmitter emitter, com.fs.starfarer.api.combat.CombatEntityAPI entity) Combat only. Anchors anemitterto aCombatEntityAPI. Sets theemitter's location to theentity's location every frame until the entity is no longer in play. Will also kill any particle streams using an anchored emitter if that emitter's anchor entity is no longer in play.
By default, particles will only take into account their emitter's location at the time of generation. To change this behavior so that particles follow their emitter throughout their lifecycle, useIEmitter.enableDynamicAnchoring().- Parameters:
emitter- Emitter to anchorentity- The combat entity to anchor to
-
initialize
public static Emitter initialize(org.lwjgl.util.vector.Vector2f location, int sfactor, int dfactor, int blendMode) Same asinitialize(Vector2f, SpriteAPI, int, int, int), but uses a default particle sprite instead of sampling a texture. -
initialize
Same asinitialize(Vector2f, SpriteAPI, int, int, int), but uses the default additive blending and a default particle sprite. -
initialize
public static Emitter initialize(org.lwjgl.util.vector.Vector2f location, com.fs.starfarer.api.graphics.SpriteAPI sprite, int sfactor, int dfactor, int blendMode) Initialize anEmitter. TheEmitter's location will be set tolocation, specified in world coordinates. TheEmitter's attributes will be initialized to default values and should be set in subsequent calls. To generate particles, useburst(particleengine.IEmitter, int)orstream(particleengine.IEmitter, int, float, float).
Note: Does not loadsprite's texture into memory. Textures not indata/config/settings.jsonare not automatically loaded. Useinitialize(Vector2f, String, int, int, int)to load loose textures into memory.- Parameters:
sprite- The texture that the particles should sample when rendered. Must already have been loaded into memory.sfactor- Source blend factor.dfactor- Destination blend factor.blendMode- Blending operation.- Returns:
- A default
Emitter
-
createCopy
public static Emitter createCopy(Emitter copy, com.fs.starfarer.api.graphics.SpriteAPI sprite, int sfactor, int dfactor, int blendMode) Initializes anEmitterwith the given sprite and blend mode settings, and then copies all ofcopy's properties to it. Changes in properties of the resulting emitter are not reflected in the original copy, nor vice versa. -
createCopy
Same ascreateCopy(Emitter, SpriteAPI, int, int, int), but also copiescopy's blending settings.- Parameters:
copy-Emitterwhose properties to copysprite- Texture to use for the new emitter- Returns:
- An emitter with the same properties as
copy
-
createCopy
Same ascreateCopy(Emitter, SpriteAPI, int, int, int), but also copiescopy's sprite and blending settings.- Parameters:
copy-Emitterwhose properties to copy- Returns:
- An emitter with the same properties as
copy
-
initialize
public static Emitter initialize(org.lwjgl.util.vector.Vector2f location, com.fs.starfarer.api.graphics.SpriteAPI sprite) Same asinitialize(Vector2f, SpriteAPI, int, int, int), but uses additive blending by default. -
initialize
public static Emitter initialize(org.lwjgl.util.vector.Vector2f location, String spriteLoc, int sfactor, int dfactor, int blendMode) Takes the sprite location instead of a SpriteAPI object. Will also load the texture into memory if it hasn't already been loaded. All textures loaded this way are automatically unloaded periodically.- See Also:
-
initialize
Uses default additive blending.- See Also:
-
burst
Generates an instantaneous burst of particles.- Parameters:
emitter-IEmitterto use.count- Number of particles to generate.- Returns:
- Whether the particles were successfully generated.
-
stream
public static void stream(IEmitter emitter, int particlesPerBurst, float particlesPerSecond, float duration) Generates a continuous stream of particles.- Parameters:
emitter-IEmitterto use.particlesPerBurst- Number of particles that should be generated at once.particlesPerSecond- Total number of particles generated per second.duration- Amount of time this particle stream should last. If negative, the stream will never expire.
-
stream
public static <T extends IEmitter> void stream(T emitter, int particlesPerBurst, float particlesPerSecond, float maxDuration, @Nullable @Nullable Particles.StreamAction<T> doBeforeGenerating) Generates a continuous stream of particles.- Parameters:
emitter-IEmitterto use.particlesPerBurst- Number of particles that should be generated at once.particlesPerSecond- Total number of particles generated per second.maxDuration- Maximum amount of time this particle stream should last. If negative, the stream will not naturally expire.doBeforeGenerating- Custom function that's called immediately before each particle generation sequence in this stream. Returningfalsewill end the stream.
-
stream
public static <T extends IEmitter> void stream(T emitter, int particlesPerBurst, float particlesPerSecond, float maxDuration, @Nullable @Nullable Particles.StreamAction<T> doBeforeGenerating, @Nullable @Nullable Particles.StreamAction<T> doWhenFinished) Generates a continuous stream of particles.- Parameters:
emitter-IEmitterto use.particlesPerBurst- Number of particles that should be generated at once.particlesPerSecond- Total number of particles generated per second.maxDuration- Maximum amount of time this particle stream should last. If negative, the stream will not naturally expire.doBeforeGenerating- Custom function that's called immediately before each particle generation sequence in this stream. Returningfalsewill end the stream.doWhenFinished- Custom function that's called when the stream expires, which can occur either naturally, if doBeforeGenerating returnsfalse, or if the stream's emitter's anchor point is removed from play. The return value is not used.
-